﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.System;
using Windows.UI.ApplicationSettings;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Animation;
using Windows.UI.Xaml.Navigation;

// Шаблон пустого приложения задокументирован по адресу http://go.microsoft.com/fwlink/?LinkId=234227

namespace JarvisProject1
{
    sealed partial class App : Application
    {

        public App()
        {
            this.InitializeComponent();
            this.Suspending += OnSuspending;
            this.Suspending += new SuspendingEventHandler(OnSuspending);
        }

        protected override void OnLaunched(LaunchActivatedEventArgs args)
        {
            Frame rootFrame = Window.Current.Content as Frame;

            // Не повторяйте инициализацию приложения, если в окне уже имеется содержимое,
            // только обеспечьте активность окна
            if (rootFrame == null)
            {
                // Создание фрейма, который станет контекстом навигации, и переход к первой странице
                rootFrame = new Frame();

                if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
                {
                    //TODO: Загрузить состояние за ранее приостановленного приложения
                }

                // Размещение фрейма в текущем окне
                Window.Current.Content = rootFrame;
            }

            if (rootFrame.Content == null)
            {
                // Если стек навигации не восстанавливается для перехода к первой странице,
                // настройка новой страницы путем передачи необходимой информации в качестве параметра
                // навигации
                if (!rootFrame.Navigate(typeof(MainPage), args.Arguments))
                {
                    throw new Exception("Failed to create initial page");
                }
            }
            // Обеспечение активности текущего окна

            Subscribe(); 

            Window.Current.Activate();
        }

        private void OnSuspending(object sender, SuspendingEventArgs e)
        {
            var deferral = e.SuspendingOperation.GetDeferral();

            Unsubscribe();

            deferral.Complete();
        }

        public void Subscribe()   
        {         
            var currentPane = SettingsPane.GetForCurrentView(); 
            currentPane.CommandsRequested += currentPane_CommandsRequested; 
        }

        public void Unsubscribe()
        {
            var currentPane = SettingsPane.GetForCurrentView();
            currentPane.CommandsRequested -= currentPane_CommandsRequested;
        }

        private Popup _settingsPopup; 
        void currentPane_CommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
        {
            var applicationCommands = args.Request.ApplicationCommands;
            var newComand = new SettingsCommand("Id_Команды", "Персонализация", cmd =>
            {  
                _settingsPopup = new Popup(); 
                _settingsPopup.IsLightDismissEnabled = true;        
                _settingsPopup.Width = 400;      
                _settingsPopup.Height = Window.Current.Bounds.Height;  
                _settingsPopup.ChildTransitions = new TransitionCollection();   
                _settingsPopup.ChildTransitions.Add(new PaneThemeTransition()     
                {            
                    Edge = (SettingsPane.Edge == SettingsEdgeLocation.Right) ? EdgeTransitionLocation.Right : EdgeTransitionLocation.Left         
                });  
                SettingsPersonalization mypane = new SettingsPersonalization(); 
                mypane.Width = 400;    
                mypane.Height = Window.Current.Bounds.Height; 
                _settingsPopup.Child = mypane;  
                _settingsPopup.SetValue(Canvas.LeftProperty,SettingsPane.Edge == SettingsEdgeLocation.Right ? (Window.Current.Bounds.Width - 400) : 0);  
                _settingsPopup.SetValue(Canvas.TopProperty, 0);   
                _settingsPopup.IsOpen = true; 
            });
            applicationCommands.Add(newComand);

            var newComand2 = new SettingsCommand("Id_Команды2", "Общие", cmd =>
            {
                //
            });
            applicationCommands.Add(newComand2);
        } 
    }
}
